package com.css.zfzx.fwsjcj.modules.reinforce.service;

import com.alibaba.fastjson.JSONObject;
import com.css.zfzx.fwsjcj.modules.reinforce.entity.FwReinforceEntity;
import com.css.zfzx.fwsjcj.modules.reinforce.vo.QueryVO;

import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author leon
 * @Title:
 * @Description:
 * @date 2020/8/26 15:38
 */
public interface FwReinforceService {

    /**
     * 新增
     *
     * @param type              0暂存，1保存（对应status的0未提交，1待审核）
     * @param fwReinforceEntity
     */
    void save(String type, FwReinforceEntity fwReinforceEntity);

    /**
     * 修改
     *
     * @param fwReinforceEntity
     */
    void update(FwReinforceEntity fwReinforceEntity);

    /**
     * 批量提交
     *
     * @param ids
     */
    void submit(List<String> ids);

    /**
     * 批量删除
     *
     * @param ids
     */
    void delete(List<String> ids);

    /**
     * 查看详情
     *
     * @param id
     * @return
     */
    FwReinforceEntity getOne(String id);

    /**
     * 分页查询
     *
     * @param projectType
     * @param curPage
     * @param pageSize
     * @return
     */
    JSONObject getPage(String projectType, String status, int curPage, int pageSize);

    /**
     * 多条件分页查询
     *
     * @param projectType
     * @param queryVO
     * @param curPage
     * @param pageSize
     * @return
     */
    JSONObject getPage(String projectType, QueryVO queryVO, int curPage, int pageSize);

    /**
     * 多条件查询
     *
     * @param queryVO
     * @return
     */
    List<FwReinforceEntity> listReinforeByParam(QueryVO queryVO);

    /**
     * 批量审核
     *
     * @param ids
     * @param status
     * @param reason
     */
    void check(List<String> ids, String status, String reason);

    /**
     * 导出
     */
    void export(QueryVO queryVO, HttpServletResponse response);

    /**
     * 根据id集合获取信息
     *
     * @param ids
     * @return
     */
    List<FwReinforceEntity> listReinforeByIds(List<String> ids);

    /**
     * 导出判断是否为空
     *
     * @param queryVO
     * @return
     */
    Boolean isEmpty(QueryVO queryVO);

    /**
     * 获取图片url
     *
     * @param type 工程类型： 0加固工程 1新建工程
     * @return
     */
    List<String> listImagesByType(String type);

    /**
     * 地图显示表单
     *
     * @return
     */
    List<FwReinforceEntity> findForm();

    /**
     * @param queryVO
     * @return
     */
    long count(QueryVO queryVO);

    /**
     * 饼状图-根据工程类型
     *
     * @param queryVO
     * @return
     */
    List<Map> projectPieNumByCategory(QueryVO queryVO);

    /****
     * 查询所有符合条件的表单
     * @param queryVO
     * @return
     */
    List<FwReinforceEntity> findVialdForm(QueryVO queryVO);


    /**
     * 查询工程年代占比
     */
    List<Map> findBarByYear(QueryVO queryVO);

    /**
     * 展示所有省的数据
     *
     * @param queryVO
     * @return
     */
    List<HashMap> listProvices(QueryVO queryVO);


    /**
     * 展示所有市的数据
     *
     * @param queryVO
     * @return
     */
    List<HashMap> listCities(QueryVO queryVO);

    /**
     * 展示所有区县的数据
     *
     * @param queryVO
     * @return
     */
    List<HashMap> listAreas(QueryVO queryVO);
}
